23

» WarCraft 3 / Используется сразу две способности

Похожие вопросы:

ответ
~8gabriel8:
В РО у способности есть есть строка Графика - Анимации, там указываешь ту, что хочешь видеть при её использовании. Например, для Огненных стрел Жрицы Луны используется анимация attack, для Молота бурь Горного Короля анимация spell throw, а для Покоя Хранителя Рощи анимация spell channel. Для двух последних способностей в РО указывается два слова, оба слова через пробел не работают, например, указывай отдельно spell и throw или spell и channel. Если у модели нет анимаций с таким названием, но есть анимации, которые содержат одно из этих слов, то будут проигрываться они. Там ещё есть тонкости, о которых долго печатать надо, да и они тебе могут не понадобиться. Пробуй.

23

» WarCraft 3 / Таверна Героев

Похожие вопросы:

ответ
~8gabriel8:
EHP_Sequence, они лишь кажутся сложными. По сути триггеры в графическом виде интерпретируют язык программирования, на котором написана вся игра. Попробуй для начала в изначальном триггере добавить действия из категории Видимость - Disable Fog of War и Disable Black Mask, они откроют всю карту. Потом добавь действие из категории Игрок - самое первое, оно установит стартовое количество золота первому игроку. Порассматривав их и поразбиравшись, поймёшь, что это просто ещё дополнительные функции редактора.
А так по идее есть один вариант через Редактор объектов, который не проверял, потому что это зашквар какой-то) Найди для предмета способность Книга заклинаний, нажми Ctrl+D, чтобы слева в РО увидеть её равкод, добавь эту способность юниту, нажав Shift+Enter в поле способностей, и введя равкод книги, в книгу же добавь равкоды юнитов или предметов, которые хочешь сделать дополнительными.
ответ
Ну, там (в разделе редактирования объектов в под-разделе <<Характеристика>>) у героя (как и у всех боевых единиц) есть параметр <<Задержка перед первым пополнением>>. Ставишь на 0 и всё, герой будет готов уже на старте игры.
ответ
~8gabriel8:
Другой игрок тоже сможет нанять панду. Не знаю, с чего вдруг такие комментарии выше.
ответ
~8gabriel8:
Запрещено создавать несколько вопросов в одном. Бот мог бы выдать к каждому вопросу аналогичные вопросы, которые уже задавались и были решены, а так выдал ерунду какую-то. Можно сделать всех юнитов героями, убрать у них пиктограмму в левой верхней части экрана и добавить триггер, если юнит умирает, который не относится к настоящим героям, то сменить владельца на какого-нибудь нейтрала.
Покупка способностей делается через способность Техника, поищи на сайте более подробное описание.
Возможность выделить много юнитов, как одного есть, но это очень сложный костыль надо делать. Да и не факт, что получится чисто. Надо делать модель круга выделения, делать триггер, который отлавливает выбор игрока и при наличии нужного количества однотипных юнитов убирает из выбора остальных, дав им модель круга выделения, другой триггер будет отлавливать все приказы выбранному юниту и отдавать их псевдовыбранным, третий триггер будет выделение снимать.
ответ
Характеристика - Задержка перед первым появлением. Ставь на ноль.

23

» WarCraft 3 / Удален

Похожие вопросы:

ответ
makkad, посмотри в близард,джи
там всё написано
ответ
обычным if LocalPlayer==твой игрок then {read} endif
если инфа для синхронизации важна, то еще и передать число ты как-то должен

23

» WarCraft 3 / Не могу найти проблему

Похожие вопросы:

ответ
call BJDebugMsg(string) отладка в редакторе.
ответ
Если верить крашлогу, у тебя создано 22 миллиона экземпляров класса CUnitListNode.
Думаю, утекают юниты и/или ссылки на них.

23

» WarCraft 3 / Как сделать триггер

Похожие вопросы:

ответ
antonpoganui, простой принцип выделения индекса. Нужно сделать такую систему для твоей карты, которая будет выделять свободный индекс в параллельных массивах переменных, которые используются в способности (например unit array caster, group array target - то есть массив боевых единиц-кастеров и массив групп боевых единиц-целей). При каждом применении выделять свободную ячейку в массивах и записывать по данному индексу информацию про текущую магию. Также, есть вариант использования локальных переменных, если магия не слишком сложная и без периодика. Например, создаешь локальные переменные через личный код (Custom Script), названия которых будут совпадать с названиями глобальных переменных, созданных с помощью редактора триггеров (если у тебя переменная "Боевая единица Caster", то на личном коде это будет "local unit udg_Caster". Данные переменные необходимо объявить в начале действий, а потом обращаться к обычной глобалке, но редактор будет подразумевать это за локальную переменную, так как имена одинаковые.
ответ
  1. эти подстроки (substring) от пустых строк в событиях не нужны
  2. высоту камеры настраивай через Set Camera Field, а не Pan Camera
ответ
через переменную случайное число
ответ
гугл в помошь! Такой ресурс ого-го 5-6 лет назад реализован... Найдеш!

23

» WarCraft 3 / Как найти ближайший разрушаемый объект?

Похожие вопросы:

ответ
если есть х/у дерева и требуемой точки, то почему бы просто не сравнивать расстояния между ними?

23

» WarCraft 3 / Поиск карты

Похожие вопросы:

ответ
"давным давно" это сколько лет назад? И что-нибудь поподробнее. Выживание кем? Какой геймплей?
ответ
Похоже, это таки важный параметр. Будет учтено.
ответ
~8gabriel8:
Holy War?
Как раз за жуков Вадим играет:
Можно выбирать режимы против крипов или против других игроков.

Вкладка была открыта, но ответ Sheridan_75 не высветился.
ответ
C++ тоже показывает 832.0, на С почему-то не смог запустить.
UrsaBoss, вообще, используй нативки, они точнее будут нахождения дистанции "руками" в данном случае. Но не используй Pow(), эта функция очень неточная.
constant native IsUnitInRange       takes unit whichUnit, unit otherUnit, real distance returns boolean
constant native IsUnitInRangeXY     takes unit whichUnit, real x, real y, real distance returns boolean
constant native IsUnitInRangeLoc    takes unit whichUnit, location whichLocation, real distance returns boolean

23

» WarCraft 3 / Прыжок

Похожие вопросы:

ответ
На сайте, вот тут, есть хорошая статья об этом. Там не совсем то, что вам нужно, но на базе данного примера вы сможете создать всё самостоятельно.
+
И, между прочим, старый форум ещё никто не отменял.
Барахолка:
Старая академия:
ответ
Возможно, это поможет: xgm.guru/p/wc3/mathmov.
ответ
По идиотски, но работает (математика 7 класс)
Caster = юнит, применивший скил
PointCaster = позиция кастера
PointTarget = точка скила
PointMiddle = Расстояние между PointCaster и PointTarget делить на 2 (середина прыжка, где будет его максимальная высота, потом снижение)
RealDistance = 0 (расстояние, на которое юнит будет двигаться каждую 0.01)
RealHeight = 0 (высота)
Включить Timer, который зазвонит через 0.01 секунд

В таймере:
PointCasterNow = позиция Caster
PointMove = PointCasterNow смещение на RealDistance
Двигать Caster в PointMove
RealHeight = корень из RealDistance (сама формула)
Установить высоту Caster как RealHeight
*Если расстояние между PointMove и PointMiddle = 0
-То,
RealDistance = RealDistance - 1
-Иначе,
RealDistance = RealDistance + 1 (или сколько хочешь)
*Если расстояние между PointMove и PointTarget = 0
-То,
Пауза Timer
-Иначе,
-
Утечки сам удалишь.
Ну или иначе вот сама формула на джассе

function ParabolaZ takes real h, real d, real x returns real
return (4 * h / d) * (d - x) * (x / d)
endfunction
h - максимальная высота в прыжке на середине расстояния (x = d / 2),
d - общее расстояние до цели,
x - расстояние от исходной цели до точки, где следует взять высоту по параболе.

У меня в принципе тоже самое.
ответ
Формула параболы

23

» WarCraft 3 / Краш

Похожие вопросы:

ответ
А что не понятного? Крашится при уничтожении базы красного, значит перелопать код, который отсится к базе или вообще к красному игроку хоть как-то. Что сложного то?
ответ
Опытным путем, спустя второй день нервов, нашел выход. Я снова импортировал текст в карту, и она перестала крашиться. Почему отсутствие текста влияло на неё, не знаю.
ответ
а открыть редактор и посмотреть самому не вариант? У логова еще способность "склад" есть, чтобы рабы вмещались. Аналогично чтобы работало пожирание надо добавлять "еду"

23

» WarCraft 3 / Землетрясение

Похожие вопросы:

ответ
можно дамми-юнитами кастовать «громовую поступь» в случайные точки определённой области
ответ
Проблема в в том, что владелец нейтрально-враждебный!
ответ
BrEd Pitt:
Цунами, буран, образование водоворота, оползни (триггерно).
Можно реализовать что угодно на нормальной физической модели, у Melissa в большом паке наработок есть. С грамотным подходом можно реализовать любой катаклизм.

23

» WarCraft 3 / Как сделать выбор расы через Диалоговое окно

Принятый ответ
Похожие вопросы:

ответ
NekoriDes:
После того, как кнопка была нажата, создавай даммика и заставляй его оплетать рудник.
Нет нужды, близзард.ж помощь (для справки, там есть функция которая сразу же сменяет обычный рудник на проклятый, рядом с исходной позицией игрока )
Если вы делайте мили карту, то вам могут очень пригодится и другие функции из Blizzard.j, советую с ними ознакомится.
ответ
Пикай всех игроков в группу и показывай каждому игроку свое окно. Для этого переменные кнопок и окна делай как массивы

23

» WarCraft 3 / Проблема с моделью

Похожие вопросы:

ответ
Свершылось... Заработало...
Вот оно.

Описание проверки:
  • проверил в редакторе, он просто вылетает при попытке настройки в РО;
  • переконвертировал в .mdl и осмотрел, все норм;
  • открыл в War3ModelEditore, удалил лишние текстуры, материалы, настроил анимации геосетов;
  • профит.
Если кто не верит, вот скрин.
ответ
Slice_Of_Spice:
ssbbssc, понятия не имею, почему он так обозвал экзешник редактора. Может из-за ЖНГП. Если ты про версию варика, то она 1.26.
С другими моделями всё ок? Если да, то копай модель, нарушил правила какие-то. Пересобери её заного)
ответ
Darknessay, я не прикосаюсь к этим моделям. Я знат не знаю про вашу ''MDLVIS''. Моделей просто нет!!!
ответ
Всё норм, это что-то с картой было не так)
PT153:
Вдруг кто нибудь да посмотрит...
В чём проблема загрузить её сюда?
Всё норм, это что-то с картой было не так)

23

» WarCraft 3 / Морф

Похожие вопросы:

ответ
В триггере с инициализацией создаешь действие: Игрок - make Ю2 недоступно for training by игрок.
Создаешь триггер: юнит завершает исследование (твой аналог берсерка) - заблокировать Ю1 (как в пункте 1), а Ю2 - разблокировать.
Создаешь способность на основе Безумие (Sbsk), указываешь в графе "новый тип войск" Ю2, даешь эту способность Ю1.
ответ
Всё. Сам разобрался.
ответ
юниту, в которого происходит морф нужно добавить как на скрине
ответ
но лучше наверн посмотреть доту

23

» WarCraft 3 / Очень странно.

Похожие вопросы:

ответ
Проблема решена. Обнаружилась довольно неожиданно - заметил, что во время крита герой не разбивал лицо сам себе, начал искать модификаторы атаки - у героя было 3 пустышки с нулевыми значениями на основе "ракет". При всех пустых значениях вылетает невидимая ракета по самому себе.
ответ
В том что нанося урон - ты вызываешь новый поток, новый поток триггера который срабатывает на получения урона, и в этом триггере используются те же переменные что и тут, вот и все. Глобалки нужно использовать с умом.
ответ
>> степень опасности
привет, каждый пользователь икапа дал админ-доступ неизвестной проге под названием лаунчер, с неизвестным содержимым. Содержимое карты тебя должно волновать примерно никак после этого.
ответ
Такое бывает, когда в JNGP создаёш объект с равкодом сущетвующей способности.

23

» WarCraft 3 / Новый тип переменной

Похожие вопросы:

ответ
Ну так то темповые глобалки и структуры vjass'а юзают уже хрен знает сколько лет, ибо да это побыстрее, тут даже вопрос не в памяти а в том что создание переменной это отельная операция как и обнуления, что ненужно делать с глобалками (их порой даже создавать ненужно, ибо bj глобалки сделали близзард) но нужно действовать осторожно, думать головой, не вызывая иных событий где будут юзатся эти же переменные.
ответ
Name Legion:
все..решил вопрос...оказывается что если установить иконку в мултиборде нужен Владелец!!
создали мултиборд
присвоили что нужно
поменяли значения
установили значения при выходе игрока из игры
и при выборе нового героя установили иконку в мултиборде согласно индексу игрока который вышел
спасибо за советы...вопрос закрыт
ответ
Утечка - это когда не удаляются ненужные объекты. Здесь регион нельзя удалять, потому что без него событие не будет работать. Но если у вас много таких событий, то лучше использовать один регион для всех событий, при условии, что размеры региона не будут изменяться в процессе игры, потому что это может нарушить работу других событий, привязанных к данному региону.
А функция TriggerRegisterEnterRectSimple в теории не утечна, но на практике может утекать, например, если в потоке триггера будет вызвано её уничтожение RemoveRegion(GetTriggeringRegion()).
ответ
всегда по ссылке для handle-типов, всегда по значению для остальных
изменить это невозможно
никак, использовать глобалку, куда сохранять локалку перед нулением
нет, нету
ну или аналоги всего этого есть в продвинутых редакторах, не знаю, пусть те, кто ими пользуются, скажут

23

» WarCraft 3 / Если unit == null

Похожие вопросы:

ответ
Главный кошмар тут, конечно - 14 групп. Пришлось так делать, т. к. принципиально не хочу применять глобалки, а локалки, похоже, после дестройгруп заново не юзабельны.
Это вроде должно быть легко поправить, вместо
call DestroyGroup (firewayunits1)
везде ставь
call GroupClear(firewayunits1)
и в самом конце уже, где идет обнуление переменных, там оставляешь DestroyGroup.
И с чего такая нелюбовь к глобалкам? Хештаблица используется, а это ж тоже глобалка, причем даже не просто глобалка, а супер-глобалка. У меня с ней постоянно головная боль была, из-за возникающих после интенсивной работы странных глюков...
ответ
Сначала проходит событие, срабатывает триггер, и выполняется код. И только после этого наносится урон. Чтобы обойти это, можно добавить паузу или таймером.
ответ
А что тут vJass требует? Глобалки?
Блок глобалок, что я объявил, и многострочные комментарии /*...*/.
PT153:
Переписал код, оставил кое-какие комментарии.
xD, я просто скопипастил создание эффекта, а ведь нужно было убрать под таймером GetSpellTargetUnit().
Вот так верно будет.
раскрыть
globals
    constant string Effect_A000 = "Abilities\\Spells\\Orc\\LightningBolt\\LightningBoltMissile.mdx"
    constant string AttEffect_A000 = "origin"
endglobals

function spell1_dmg takes nothing returns nothing
    local integer h = GetHandleId(GetExpiredTimer())
    local unit target = LoadInteger(udg_spells_hashtable, h, 0)
    local integer tik_count = LoadInteger(udg_spells_hashtable, h, 2)
    // Вместо определения локалки для кастера, сразу пихаем его в UnitDamageTargetBJ.
    // Локалку всё также можно определить, но после endif её нужно обнулить.
    // set caster = null
    call DestroyEffect(LoadEffectHandle(udg_spells_hashtable, h, 3))
    if tik_count > 0 then
        call UnitDamageTargetBJ(LoadUnitHandle(udg_spells_hashtable, h, 1),/*
                                              */ target, udg_spell1_dmg_period_count, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_MAGIC)
        call DisplayTextToPlayer(GetLocalPlayer(), 0., 0., I2S(tik_count))  // асинхронно, работает по сети.
        call SaveInteger(udg_spells_hashtable, h, 2, tik_count - 1)
        call SaveEffectHandle(udg_spells_hashtable, h, 3, AddSpecialEffectTarget(Effect_A000, target, AttEffect_A000))
    else
        call FlushChildHashtable(udg_spells_hashtable, h)  // удаляет все записи с parent ключом h.
        call DestroyTimer(GetExpiredTimer())  // удаляет таймер.
    endif
    set target = null
endfunction

function Trig_spell1_cast_jass_Actions takes nothing returns nothing
    local timer t = CreateTimer()
    local integer h = GetHandleId(t)
    call TimerStart(t, 0.05, true, function spell1_dmg)
    call SaveUnitHandle(udg_spells_hashtable, h, 0, GetSpellTargetUnit())
    call SaveUnitHandle(udg_spells_hashtable, h, 1, GetSpellAbilityUnit())
    call SaveInteger(udg_spells_hashtable, h, 2, udg_spell1_time_period_count)
    call SaveEffectHandle(udg_spells_hashtable, h, 3, AddSpecialEffectTarget(Effect_A000, GetSpellTargetUnit(), AttEffect_A000))
    set t = null  // обнуление.
endfunction
ответ
Steal nerves:
зацикленность.
У тебя триггер ловит нанесение урона, затем этому же юниту наносим триггерно урон. Триггер сам себя и зацикливает. Так он будет бесконечно ловить и наносить урон. Это надо либо прервать или заранее исключить такое.
Заранее исключаем:
Выключаем тек триггер <= чтобы не словил нанесения урона
триггерно наносим урона
включаем обратно тек триггер

23

» WarCraft 3 / За что отвечают данные функции?

Похожие вопросы:

ответ
закрыт по таймауту
ответ
Нужно ли удалять texttag после вышеуказанной функции CreateTexttag(...)
Нет, Lifespan с этим справится сам.
Какие данные нужно ввести в эту функцию, чтобы texttag двигался и исчезал так же, как и у BLIZZARD это работает с наградой за убийство, критическим ударами и предметами "Вязанка дров" и "Счастливая монетка"?
осторожно, инглиш
Gold Text
Floating Text - Create floating text that reads (+ + Gold) at (Center of (Playable map area)) with Z offset 0.00, using font size 10.00, color (100.00%, 86.00%, 0.00%), and 0.00% transparency
Floating Text - Set the velocity of (Last created floating text) to 54.00 towards 90.00 degrees
Floating Text - Change permanent state of (Last created floating text) to Disable
Floating Text - Change the lifespan of (Last created floating text) to 2.00
Floating Text - Change the fadepoint of (Last created floating text) to 1.00
Lumber Text
Floating Text - Create floating text that reads (+ + Lumber) at (Center of (Playable map area)) with Z offset 0.00, using font size 10.00, color (0.00%, 78.00%, 31.00%), and 0.00% transparency
Floating Text - Set the velocity of (Last created floating text) to 54.00 towards 90.00 degrees
Floating Text - Change permanent state of (Last created floating text) to Disable
Floating Text - Change the lifespan of (Last created floating text) to 2.00
Floating Text - Change the fadepoint of (Last created floating text) to 1.00
Bounty Text
Floating Text - Create floating text that reads (+ + Bounty) at (Center of (Playable map area)) with Z offset 0.00, using font size 10.00, color (100.00%, 86.00%, 0.00%), and 0.00% transparency
Floating Text - Set the velocity of (Last created floating text) to 54.00 towards 90.00 degrees
Floating Text - Change permanent state of (Last created floating text) to Disable
Floating Text - Change the lifespan of (Last created floating text) to 3.00
Floating Text - Change the fadepoint of (Last created floating text) to 2.00
"miss" Text
Floating Text - Create floating text that reads miss at (Center of (Playable map area)) with Z offset 0.00, using font size 10.00, color (100.00%, 0.00%, 0.00%), and 0.00% transparency
Floating Text - Set the velocity of (Last created floating text) to 72.00 towards 90.00 degrees
Floating Text - Change permanent state of (Last created floating text) to Disable
Floating Text - Change the lifespan of (Last created floating text) to 3.00
Floating Text - Change the fadepoint of (Last created floating text) to 1.00
Critical Strike
Floating Text - Create floating text that reads (CriticalStrike + !) at (Center of (Playable map area)) with Z offset 0.00, using font size 10.00, color (100.00%, 0.00%, 0.00%), and 0.00% transparency
Floating Text - Set the velocity of (Last created floating text) to 72.00 towards 90.00 degrees
Floating Text - Change permanent state of (Last created floating text) to Disable
Floating Text - Change the lifespan of (Last created floating text) to 5.00
Floating Text - Change the fadepoint of (Last created floating text) to 2.00
Shadow Strike Text
Floating Text - Create floating text that reads ShadowStrike at (Center of (Playable map area)) with Z offset 0.00, using font size 10.00, color (62.00%, 100.00%, 0.00%), and 0.00% transparency
Floating Text - Set the velocity of (Last created floating text) to 72.00 towards 90.00 degrees
Floating Text - Change permanent state of (Last created floating text) to Disable
Floating Text - Change the lifespan of (Last created floating text) to 5.00
Floating Text - Change the fadepoint of (Last created floating text) to 2.00
Mana Burn Text
Floating Text - Create floating text that reads ManaBurn at (Center of (Playable map area)) with Z offset 0.00, using font size 10.00, color (32.00%, 32.00%, 100.00%), and 0.00% transparency
Floating Text - Set the velocity of (Last created floating text) to 72.00 towards 90.00 degrees
Floating Text - Change permanent state of (Last created floating text) to Disable
Floating Text - Change the lifespan of (Last created floating text) to 5.00
Floating Text - Change the fadepoint of (Last created floating text) to 2.00

23

» WarCraft 3 / Проблема с мультибоардом

Похожие вопросы:

ответ
При использовании нативного функционала работы с мультибордом утекает multiboarditem при каждом действии. Советую попользоваться этим набором:
lib MBItems
{
    private multiboarditem  mbitem

    void MBSS(multiboard board, int col, int row, bool showValue, bool showIcon)
    {
        mbitem = MultiboardGetItem(board, row, col)
        MultiboardSetItemStyle(mbitem, showValue, showIcon)
        MultiboardReleaseItem(mbitem)
    }

    void MBSC(multiboard board, int col, int row, real red, real green, real blue, real transparency)
    {
        mbitem = MultiboardGetItem(board, row, col)
        MultiboardSetItemValueColor(mbitem, PercentToInt(red,255), PercentToInt(green,255), PercentToInt(blue,255), PercentToInt(100.0-transparency,255))
        MultiboardReleaseItem(mbitem)
    }

    void MBSW(multiboard board, int col, int row, real width)
    {
        mbitem = MultiboardGetItem(board, row, col)
        MultiboardSetItemWidth(mbitem, width/100.0)
        MultiboardReleaseItem(mbitem)
    }

    void MBSI(multiboard board, int col, int row, string iconFileName)
    {
        mbitem = MultiboardGetItem(board, row, col)
        MultiboardSetItemIcon(mbitem, iconFileName)
        MultiboardReleaseItem(mbitem)
    }

    void MBST(multiboard board, int col, int row, string val)
    {
        mbitem = MultiboardGetItem(board, row, col)
        MultiboardSetItemValue(mbitem, val)
        MultiboardReleaseItem(mbitem)
    }
}

23

» WarCraft 3 / Проигрывание анимации

Похожие вопросы:

ответ
Я так и не понял чем была вызвана эта проблема, но точно не из-за бокса. Скорее из-за камеры. Поставил вейт перед проигрыванием анимации и всё решилось.
ответ
Если в редакторе моделей видно, что разные комплекты анимацый имеют характерные названия, например, все с луком заканчиваются словом bow , тогда команда Animation - add animation tag " bow " to unit.
Вот пример: пример
ответ
Скорее поставить задержку в 0.00 сек при применении и потом уже удалять
ответ
vincent_freeman:
Ну я пробовал Play Unit's animation и Queue unit's animation вместе и по отдельности. Юниты проигрывают ее 1 раз и застывают.
Вот периодически заставляй, раз в сек пример ну или канал.
ответ
закрыт по таймауту

23

» WarCraft 3 / Пассивка вивера

Похожие вопросы:

ответ
Пассивка шишера это сфера молний, с эффектом способности "огненные стрелы". Перезарядка у самих стрел.
ответ
Мб это негейшин (амулет защиты) из него мона делать пассивку с кулдауном, для активации кастануть даммиком какойнить скилл в юнита с негейшином, будет кд.
Потом как кд пройдет негейшин удалить и добавить пассивку, ну и так далее.
ответ
Ну решается всё довольно тривиально
Юнит атакован
приказ атакующего юнита не равен "атаковать"
б.е. - приказать атакующий ПКМ атакованного
При первой атаке произойдёт небольшая потеря времени, т.к. получив при каз юнит заново начнёт анимацию атаки. Зато орб будет прокать.
Алсо если приказать юниту перейти нападая на противников (триггерно или ручками) - приказ юнита будет какой-надо и орб будет срабатывать.
ответ
Это лечится не юзаньем сферы замедления для подобных пассивок.
Лич долго кочевряжился с этой бедой, сфера замдления перебивает тучу орбов + не стакается с критами\башами.
Делайте триггерный орб (хотя-бы только для тех у кого есть активные автокаст орбы)

23

» WarCraft 3 / Игра странно себя ведет

Похожие вопросы:

ответ
достаёшь ai скрипты с версий 1.26 и 1.24 и сравниваешь их
ответ
На сколько я знаю, Микс в отличии от локальных файлов не требует правок в реестре.
ответ
Arak1da, да ты и вправду дурак.
Линейная интерполяция не делает вещи плавнее. Это равномерная интерполяция, линейная, так не движутся "живые" персонажи. За "плавностью" к Безье или Эрмиту. xgm.guru/p/wc3/anims-a-ya-3
А по поводу темы топика - могу обратить внимание автора на:
  1. Менял ли ты структуру исходного скелета, делая новую анимацию (имею ввиду только исходные кости, например, кость головы.)? Если да, то как?
  2. Попробуй посмотреть, что у тебя с интерполяцией для вращения по нужной оси на рутовом объекте.

23

» WarCraft 3 / Передача локальной переменной

Принятый ответ
Похожие вопросы:

ответ
Хэш таблица. Удобна и практична. Кстати, не забудь создать глобальную переменную Hash, типа хэш-таблица и при инициализации карты инициализировать Hash, иначе не будет работать.
function Trig_HealImp_Timer takes nothing returns nothing 
     local timer t = GetExpiredTimer() 
     local integer hid = GetHandleId(t) 
     local unit caster = LoadUnitHandle(udg_Hash, hid, 0) //Наш юнит хранится по ссылке "0", вытаскиваем его, чтобы с ним работать
     local integer i = LoadInteger(udg_Hash, hid, 1)  //Счетчик
    local real hp1 = GetUnitState(caster, ConvertUnitState(0)) //текущее здоровье
    local real hp = GetUnitState(caster, ConvertUnitState(1)) //максимальное здоровье
    local real chp = (hp/100)*0.8 //значение, на которое лечим юнит
     if i != 50 then //Срабатывание таймера 0,1. Так как длительность лечения составляет 5 сек, то таймер должен сработать 50 раз. Кстати, исходя из этого, высчитываем chp.
          set i = i + 1 //Увеличиваем значение счетчика
          call SetUnitState(caster, ConvertUnitState(0), hp1+chp) //лечим юнит
          call SaveInteger(udg_Hash, hid, 1, i) //Сохраняем новое значение счетчика. Если этого не будет, счетчик вечно будет равен 0.
     else //Когда счетчик равен 50, мы останавливаем таймер и чистим Хэш
         call PauseTimer(t) 
         call DestroyTimer(t) 
         call FlushChildHashtable(udg_Hash, hid) 
     endif 
     set t=null
     set caster = null 
endfunction 

function Trig_HealImp_Actions takes nothing returns nothing
    local timer t = CreateTimer()  //Таймер
     local integer hid = GetHandleId(t) )  //Id таймера
     local unit caster =GetTriggerUnit() //юнит, который мы будем лечить, по факту тот, кто активировал способность
     call SaveUnitHandle(udg_Hash, hid, 0, caster) //сохраняем в Хэш юнит caster с ссылкой "0".
     call SaveInteger(udg_Hash, hid, 1, 0) //сохраняем значение 0 с ссылкой "1". Это будет счетчик длительности лечения.
     call TimerStart(t, 0.1, true, function Trig_HealImp_Timer) //запускаем таймер. 
     set t = null  
     set caster = null 
endfunction
ответ
Конечно - глобальные переменные, хештаблицы, все функции Get в соответствующих потоках.
ответ
всегда по ссылке для handle-типов, всегда по значению для остальных
изменить это невозможно
никак, использовать глобалку, куда сохранять локалку перед нулением
нет, нету
ну или аналоги всего этого есть в продвинутых редакторах, не знаю, пусть те, кто ими пользуются, скажут

23

» WarCraft 3 / Телепортируется здание

Похожие вопросы:

ответ
делается это через проверку на существование точки сбора
то есть
boolean IsRally(unit u){
	location a=GetUnitRallyPoint(u);
	bool b=a!=null;
	RemoveLocation(a)
	return b;	
}
ответ
В редакторе скелета